home *** CD-ROM | disk | FTP | other *** search
Wrap
var g_kTaskBarWidth = 84; var g_previousContrastMode=""; var g_tracktimeTextWidth=-1; var g_fGoingDown = true; var g_kAnimationSpeed = 25; var g_LastVolume = -1; //===================================================== COLOR UTILS ======================= var g_services_setting; var g_clear_glass = new ColorSetting(0,0.625); var g_selectedservice_setting; function UpdateBrandingColors() { if (null==g_services_setting) { g_services_setting = new ColorSetting(svServices.backgroundImageHueShift, svServices.backgroundImageSaturation); } var brandcolor = brand.colorPlayer; if (VerifyColor(brandcolor)) { var nextsetting = DetermineHSVOffset(g_basecolor, brandcolor); if ( (null==g_selectedservice_setting) || (nextsetting.hue!=g_selectedservice_setting.hue) || (nextsetting.sat!=g_selectedservice_setting.sat) ) { g_selectedservice_setting = nextsetting; if (ServiceActive()) { FadeToServiceGlass(); } } } } function FadeToClearGlass() { g_clear_glass.hue = mediacenter.backHueShift; g_services_setting = g_clear_glass; BeginServiceBlend(); } function FadeToServiceGlass() { g_services_setting = g_selectedservice_setting; BeginServiceBlend(); } function BeginServiceBlend() { g_ServiceBlendStart = new Date().getTime(); IterateServiceHue(); } function ServiceActive() { return (app.currentTask.indexOf("Service") != -1); } var g_serviceactive; function UpdateServiceActive() { var newval = ServiceActive(); if (g_serviceactive!=newval) { g_serviceactive=newval; if (newval) { FadeToServiceGlass(); } else { FadeToClearGlass(); } } } var g_ServiceBlendStart = new Date().getTime(); var blendratepref = parseInt(theme.loadPreference('serviceblendtime')); var g_blendrate = ( isNaN(blendratepref) || (blendratepref<=0) ) ? 330 : blendratepref; var logstr=""; function IterateServiceHue() { var currentlocation = (new Date().getTime() - g_ServiceBlendStart); if (currentlocation > (2*g_blendrate)) { svServices.backgroundImageHueShift = g_services_setting.hue; svServices.backgroundImageSaturation = g_services_setting.sat; return; } //normalize 0 to 1 var scalefactor = (currentlocation % g_blendrate) / g_blendrate; //make nonlinear scalefactor = scalefactor*scalefactor; logstr+= ("-"+scalefactor); if (currentlocation <= g_blendrate) { svServices.backgroundImageSaturation = g_services_setting.sat * (1.0-scalefactor); } else { svServices.backgroundImageHueShift = g_services_setting.hue; svServices.backgroundImageSaturation = g_services_setting.sat * scalefactor; } svServices.alphaBlendTo(0xff,33); } function VerifyColor(str) { var pound = str.slice(0,1); if (pound!="#") return false; var colorpart = str.slice(1); var hexVal = parseInt("0x" + colorpart,16); if (isNaN(hexVal) || (hexVal<0) || (hexVal>0xffffff) ) return false; return true; } var g_basecolor="#366AB3"; function DetermineHSVOffset(color_baseline, color_target) { var hsv_baseline = ColorToHSV(color_baseline); var hsv_target = ColorToHSV(color_target); var hue_offset = (720 + hsv_target.h - hsv_baseline.h) % 360; var satscale = (hsv_baseline.s==0) ? 1.0 : (hsv_target.s / hsv_baseline.s); return new ColorSetting(hue_offset, satscale); } function ColorSetting(hue,sat) { this.hue=hue; this.sat=sat; } function ColorToHSV(color) { var rgb = ColorToRGB(color); var hsv = RGBToHSV(rgb); return hsv; } function ColorToRGB(color) { var r,g,b; var hexVal = parseInt("0x" + color.slice(1),16); r = hexVal>>16; g = (hexVal & 0x00FF00) >>8; b = (hexVal & 0x0000FF); var reply = new RGB(r,g,b); return reply; } function RGB(r,g,b) { this.r=r; this.g=g; this.b=b; } function HSV(h,s,v) { this.h=h; this.s=s; this.v=v; } function RGBToHSV(rgb) { var min, max, h, s, v; var r = parseInt(rgb.r)/255; var g = parseInt(rgb.g)/255; var b = parseInt(rgb.b)/255; max = Math.max(Math.max(r, g), b); min = Math.min(Math.min(r, g), b); v = max; if ( max != 0 ) { s = (max - min) / max; } else { s = 0; } if ( s == 0 ) { h = 0; } else { if ( r == max ) { h = (g - b) / (max - min); } else if ( g == max ) { h = 2.0 + (b - r) / (max - min); } else { h = 4.0 + (r - g) / (max - min); } h = h / 6.0; if ( h < 0.0 ) { h = h + 1.0; } } var reply = new HSV(h*360, s, v); return reply; } //========================================================================================== var g_rgColorPresets = new Array ( //==================================================================== /* HUE SATURATION || TITLE */ //==================================================================== new ColorSetting(0, 1), // defaultblue new ColorSetting(330, 0.491124272346497), // teal_new new ColorSetting(330, 1), // teal_current new ColorSetting(300, 0.491124272346497), // seagreen_new new ColorSetting(300, 1), // seagreen_current new ColorSetting(240, 0.491124272346497), // green_new new ColorSetting(240, 1), // green_current new ColorSetting(210, 0.491124272346497), // xpolive new ColorSetting(210, 1), // olive_current new ColorSetting(180, 0.272189348936081), // putty new ColorSetting(180, 1), // brown_current new ColorSetting(171.48, 1.84), // orange new ColorSetting(150, 0.491124272346497), // bronze_new new ColorSetting(150, 1), // bronze_current new ColorSetting(120, 1), // red_current new ColorSetting(90, 1), // magenta_current new ColorSetting(60, 0.461538463830948), // violet_new new ColorSetting(60, 1), // violet_current new ColorSetting(30, 0.467455625534058), // purple_new new ColorSetting(30, 1.0), // purple_current new ColorSetting(0, 0.0), // grey new ColorSetting(0, 0.272189348936081), // xpsilver new ColorSetting(0, 0.491124272346497) // blue ); var g_nCurrentColorPreset=parseInt(theme.loadPreference("CurrentColorPreset")); function CycleColors(interval) { if ( isNaN( g_nCurrentColorPreset ) ) { g_nCurrentColorPreset=0; } else { g_nCurrentColorPreset = (g_nCurrentColorPreset+interval)%g_rgColorPresets.length; } mediacenter.backHueShift = g_rgColorPresets[g_nCurrentColorPreset].hue; mediacenter.backSaturation = g_rgColorPresets[g_nCurrentColorPreset].sat; } function InitNewControls() { var cm = mediacenter.contrastMode; if ( (cm=="WB") || (cm=="BW") ) { var IDB_APPAUTOHIDEBTN_BW =1902; var IDB_APPEQBTN_BW =1904; var IDB_APPPLAYLISTBTN_BW =1906; var IDB_BTNGROUP_BW =1910; var IDB_FASTFORWARD_BTN_BW =1912; var IDB_REWIND_BTN_BW =1914; var IDB_MINCLOSE_BTNGRP_BW =1916; var IDB_MUTE_BTN_BW =1918; var IDB_PLAY_BTN_BW =1920; var IDB_PLAY_PAUSE_BTN_BW =1922; var IDB_RESIZE_BW =1924; var IDB_SEEK_SLDR_BKG_BW =1926; var IDB_SOUND_BTN_BW =1928; var IDB_STOP_BTN_BW =1930; var IDB_TASKBAR_HANDLE_CLOSE_BW =1932; var IDB_TASKBAR_HANDLE_OPEN_BW =1934; var IDB_TASKBTNSCROLLDOWN_BW =1936; var IDB_VOL_SLDR_FORE_BW =1942; var IDB_TASKBAR_BUTTONGROUP_HOVER_BW =1950; var IDB_TASKBAR_BUTTONGROUP_UP_BW =1948; var IDB_SEEK_THUMB_BW =1683; var IDB_OLDSTRBMP_VOL_THUMB_BW =1978; var IDB_RESTOREDOWN_BW =2054; var IDB_OLDSTRBMP_PLAY_PAUSE_BTN_BW =1922; var IDB_SKINMODE_HUESHIFT_BW =2075; var IDB_DROPDOWN_BG_BW =2160; var IDB_DROPDOWN_ICON_BW =2162; // The resource IDs for the high contrast images are set up so that if the black on white // version has an ID of N, the white on black has an ID of N+1 // // "BW" means Black-on-White, which means we want to use the base resource ID (offset=0) // "WB" means White-on-Black, which means we want to increment the BW resource ID by one (offset=1) var offset = (cm=="BW") ? 0 : 1; var inverseOffset = (offset==0) ? 1 : 0; if (""==g_previousContrastMode) { CacheImage("TaskBarButtons.image"); CacheImage("TaskBarButtons.downImage"); CacheImage("TaskBarButtons.hoverImage"); //CacheImage("taskbar_handle.hoverDownImage"); ?? } SetAllButtonImages("autohide", "res://wmploc/#" + (IDB_APPAUTOHIDEBTN_BW+inverseOffset)); autohide.image= "res://wmploc/#" + (IDB_APPAUTOHIDEBTN_BW+offset); SetAllButtonImages("TransportButtongroup", "res://wmploc/#" + (IDB_BTNGROUP_BW+inverseOffset)); TransportButtongroup.image= "res://wmploc/#" + (IDB_BTNGROUP_BW+offset); TransportButtongroup.disabledImage= "res://wmploc/#" + (IDB_BTNGROUP_BW+offset); SetAllButtonImages("PauseButtonGroup", "res://wmploc/#" + (IDB_OLDSTRBMP_PLAY_PAUSE_BTN_BW+inverseOffset)); PauseButtonGroup.image= "res://wmploc/#" + (IDB_OLDSTRBMP_PLAY_PAUSE_BTN_BW+offset); SetAllButtonImages("ffwdGroup", "res://wmploc/#" + (IDB_FASTFORWARD_BTN_BW+inverseOffset)); ffwdGroup.image= "res://wmploc/#" + (IDB_FASTFORWARD_BTN_BW+offset); SetAllButtonImages("rewGroup", "res://wmploc/#" + (IDB_REWIND_BTN_BW+inverseOffset)); rewGroup.image= "res://wmploc/#" + (IDB_REWIND_BTN_BW+offset); SetAllButtonImages("btngrpMinClose", "res://wmploc/#" + (IDB_MINCLOSE_BTNGRP_BW+inverseOffset)); btngrpMinClose.image= "res://wmploc/#" + (IDB_MINCLOSE_BTNGRP_BW+offset); SetAllButtonImages("btngrpRestore", "res://wmploc/#" + (IDB_RESTOREDOWN_BW+offset)); SetAllButtonImages("btnResizeHide", "res://wmploc/#" + (IDB_RESIZE_BW+offset)); SetAllButtonImages("btnResizeShow", "res://wmploc/#" + (IDB_RESIZE_BW+offset)); btnResizeShow.transparencyColor="#FF00ff"; if(""==g_previousContrastMode) { CacheImage("seek.foregroundImage"); CacheImage("seek.backgroundImage"); CacheImage("seek.thumbImage"); CacheImage("seek.thumbHoverImage"); CacheImage("seek.thumbDownImage"); CacheImage("volume.foregroundImage"); CacheImage("volume.thumbImage"); CacheImage("volume.thumbHoverImage"); CacheImage("volume.thumbDownImage"); CacheImage("Playlist_Drop_Down.dropDownImage"); CacheImage("Playlist_Drop_Down.dropDownBackgroundImage"); } seek.foregroundImage = "res://wmploc/#" + (IDB_SEEK_SLDR_BKG_BW+offset); seek.backgroundImage = "res://wmploc/#" + (IDB_SEEK_SLDR_BKG_BW+offset); seek.thumbImage = "res://wmploc/#" + (IDB_SEEK_THUMB_BW+offset); seek.thumbHoverImage = "res://wmploc/#" + (IDB_SEEK_THUMB_BW+inverseOffset); seek.thumbDownImage = "res://wmploc/#" + (IDB_SEEK_THUMB_BW+inverseOffset); volume.foregroundImage = "res://wmploc/#" + (IDB_VOL_SLDR_FORE_BW+offset); volume.thumbImage = "res://wmploc/#" + (IDB_OLDSTRBMP_VOL_THUMB_BW+offset); volume.thumbHoverImage = "res://wmploc/#" + (IDB_OLDSTRBMP_VOL_THUMB_BW+inverseOffset); volume.thumbDownImage = "res://wmploc/#" + (IDB_OLDSTRBMP_VOL_THUMB_BW+inverseOffset); Playlist_Drop_Down.dropDownBackgroundImage = "res://wmploc/#" + (IDB_DROPDOWN_BG_BW+offset);; Playlist_Drop_Down.dropDownImage = "res://wmploc/#" + (IDB_DROPDOWN_ICON_BW+offset); SetAllButtonImages("taskbar_handle", "res://wmploc/#" + (IDB_TASKBAR_HANDLE_OPEN_BW+offset)); taskbar_handle.downImage = "res://wmploc/#" + (IDB_TASKBAR_HANDLE_CLOSE_BW+offset); taskbar_handle.hoverDownImage = "res://wmploc/#" + (IDB_TASKBAR_HANDLE_CLOSE_BW+offset); SetAllButtonImages("MoreButton", "res://wmploc/#" + (IDB_TASKBTNSCROLLDOWN_BW+offset)); SetAllButtonImages("TaskBarButtons", "res://wmploc/#" + (IDB_TASKBAR_BUTTONGROUP_HOVER_BW+offset)); TaskBarButtons.image = "res://wmploc/#" + (IDB_TASKBAR_BUTTONGROUP_UP_BW+offset); SetAllButtonImages("CornerButtons", "res://wmploc/#" + (2046+inverseOffset)); CornerButtons.image ="res://wmploc/#" + (2046+offset); taskBtnNowPlayingCaption.foregroundColor = (cm=="BW") ? "black" : "white"; } else { if (g_previousContrastMode!="") { UnCacheAllImages(); } btnResizeShow.transparencyColor=""; taskBtnNowPlayingCaption.foregroundColor = getDarkTextColor(); } // Not sure about exposing this just yet leave it commented out until we get a ruling // If enabled, verify app start up perf regressions before checking in the enabled code // If XP or better and DVD is available update the TaskButton // /* if(false && player.dvd.isAvailable("dvddecoder")) { taskBtnCDAudioCaption.value="res://wmploc/RT_STRING/#1279"; taskBtnCDAudio.accKeyboardShortcut="res://wmploc/RT_STRING/#2114"; taskBtnCDAudio.upToolTip="res://wmploc/RT_STRING/#1280"; taskBtnCDAudio.downToolTip="res://wmploc/RT_STRING/#1280"; taskBtnCDAudio.accName="res://wmploc/RT_STRING/#2162"; } */ g_previousContrastMode=cm; g_bufferingProgress = player.network.bufferingProgress; if (app.titleBarVisible) { btngrpMinClose.alphablend = 0; } OnOpenStateChangeTransport(player.openState); OnPlayStateChangeTransport(player.playState); OnStatusChangeTransport(player.status); player.settings.mute = (theme.loadPreference("mute")=="True"); } var g_textMargin=parseInt(theme.loadString("res://wmploc/RT_STRING/#1272")); var g_tracktimeMargin = 2*g_textMargin + 10; //running_background_plugins.width is 10 function LayoutMarquee() { if ( (g_tracktimeTextWidth!=-1) && (g_tracktimeTextWidth == tracktime.textwidth)) return; g_tracktimeTextWidth = tracktime.textwidth; var marqueeSize = svMarquee.width - 2; tracktime.horizontalAlignment='left'; tracktime.left = marqueeSize - tracktime.textwidth; tracktime.horizontalAlignment='right'; running_background_plugins.horizontalAlignment='left'; running_background_plugins.left = marqueeSize - tracktime.textwidth - g_textMargin - running_background_plugins.width; running_background_plugins.horizontalAlignment='right'; metadata.width = marqueeSize - tracktime.textwidth - g_tracktimeMargin - metadata.left; } var g_trackTimeFormat = parseInt(theme.loadPreference("TrackTimeFormat")); //0 is normal, 1 is current/total, and 2 is counting down if (isNaN(g_trackTimeFormat)) g_trackTimeFormat=0; var g_totalTrackTimeFormats = 3; function SaveTracktimeFormat() { theme.savePreference("TrackTimeFormat", g_trackTimeFormat); } function RotateTrackTimeFormats() { if (isNaN(g_trackTimeFormat)) g_trackTimeFormat=0; g_trackTimeFormat = (g_trackTimeFormat+1)%g_totalTrackTimeFormats; UpdateTrackTime(); } function UpdateTrackTime() { switch (g_trackTimeFormat) { //normal mode case 0: tracktime.value = player.controls.currentPositionString; return; //current / total mode case 1: tracktime.value = WMPStringsFunction_GetPositionText(); return; //counting backwards mode case 2: var dur = player.currentMedia.duration; if ( dur>0 ) { var curPos = player.controls.currentPosition; if (dur>=curPos) { tracktime.value = app.getTimeString(dur - curPos); return } } break; } tracktime.value = player.controls.currentPositionString; } function SetAllButtonImages(btn,imagename) { try { var actualButton = eval(btn); if (""==g_previousContrastMode) { CacheImage(btn + ".image"); CacheImage(btn + ".downImage"); CacheImage(btn + ".hoverImage"); CacheImage(btn + ".disabledImage"); CacheImage(btn + ".hoverDownImage"); } actualButton.image=imagename; actualButton.downImage=imagename; actualButton.hoverImage=imagename; actualButton.disabledImage=imagename; actualButton.hoverDownImage=imagename; } catch(err){} } function SetAllSliderImages(sldr, bkg, thumb) { var actualSlider = eval(sldr); if (""==g_previousContrastMode) { CacheImage(sldr + ".backgroundImage"); CacheImage(sldr + ".foregroundImage"); CacheImage(sldr + ".thumbImage"); CacheImage(sldr + ".thumbHoverImage"); CacheImage(sldr + ".thumbDownImage"); } actualSlider.backgroundImage = bkg; actualSlider.foregroundImage = bkg; actualSlider.thumbImage = thumb; actualSlider.thumbHoverImage = thumb; actualSlider.thumbDownImage = thumb; } var g_ArrayOfAllImages = new Array(); function CacheImage(imageID) { g_ArrayOfAllImages[imageID] = eval(imageID); } function UnCacheAllImages() { for (var img in g_ArrayOfAllImages) { eval(img + ' = g_ArrayOfAllImages[img]'); } g_ArrayOfAllImages.length=0; } function currentTaskChange() { var btnDown = null; switch(app.currentTask) { case 'NowPlaying': btnDown = taskBtnNowPlaying; break; case 'MediaLibrary': btnDown = taskBtnMediaLibrary; break; case 'CDAudio': btnDown = taskBtnCDAudio; break; case 'CDWrite': btnDown = taskBtnBurn; break; case 'PortableDevice': btnDown = taskBtnSync; break; case 'PlayerGuide': ShowLoadingText(); btnDown = taskBtnPlayerGuide; break; case 'ServiceTask1': ShowLoadingText(); btnDown = taskBtnServiceTask1; break; case 'ServiceTask2': ShowLoadingText(); btnDown = taskBtnServiceTask2; break; case 'ServiceTask3': ShowLoadingText(); btnDown = taskBtnServiceTask3; break; } taskBtnNowPlaying.down = false; taskBtnMediaLibrary.down = false; taskBtnCDAudio.down = false; taskBtnBurn.down = false; taskBtnSync.down = false; taskBtnPlayerGuide.down = false; taskBtnServiceTask1.down = false; taskBtnServiceTask2.down = false; taskBtnServiceTask3.down = false; if (btnDown) { btnDown.down = true; } UpdateServiceActive(); } function ShowLoadingText() { LoadingTxt.alphaBlend=0; LoadingTxt.alphaBlendTo(0xff,4500); } function view_onload() { set_apptimer(); UpdateServiceButtonCount(); InitTaskbarSet(); LayoutTaskbar(); UpdateOverflowButtonVisible(true); InitNewControls(); LayoutMarquee(); UpdateServicesVisible(OverflowBackground.left); UpdateTaskbarVisible(); UpdateBrandingColors(); } var g_postmessagecode=""; function PostMessage(code) { var timerAlreadySet = (g_postmessagecode!=""); if (g_postmessagecode.indexOf(code)==-1) { g_postmessagecode+=code; } if (!timerAlreadySet) { postMessage.alphaBlendTo(0xff,1); } } function MessageLoop() { var tmp = g_postmessagecode; g_postmessagecode=""; eval(tmp); } function view_height_onchange() { PostMessage("UpdateTaskbarVisible();"); } function view_width_onchange() { HandleTaskBarResize(); PostMessage("HandleTaskBarResize();"); } var g_taskBarHideHeight=200; function UpdateTaskbarVisible() { svTaskButtons.visible = ShouldWeShowTheTaskbar(); } function ShouldWeShowTheTaskbar() { return app.taskBarVisible && (svEntireApp.height > g_taskBarHideHeight); } function CheckShowCloseMinimizeButtons() { return (!app.titleBarVisible); } function UpdateTitleBarRelatedUI() { var showMinCloseButtons = CheckShowCloseMinimizeButtons(); if (btnMinimize.enabled != showMinCloseButtons) { btnMinimize.enabled = showMinCloseButtons; if (showMinCloseButtons) btngrpMinClose.visible = true; btngrpMinClose.alphaBlendTo(showMinCloseButtons ? 0xff : 0, 330); } if (app.titleBarVisible) { appautohidebtn.accName="res://wmploc.dll/RT_STRING/#2155"; } else { appautohidebtn.accName="res://wmploc.dll/RT_STRING/#2156"; } //svEntireApp.top = (app.titleBarVisible || app.titleBarAutoHide) ? 0 : -svAppFillTop.height; svEntireApp.verticalAlignment="top"; var newTop=0; var newHeight = view.height; if (app.titleBarVisible) { newHeight += svAppFillTop.height; newTop -= svAppFillTop.height; } svEntireApp.height = newHeight; svEntireApp.top = newTop; svEntireApp.verticalAlignment="stretch"; view_height_onchange(); } /* function InitNewBuyMe() { var BuyBMP = mediacenter.getNamedString("BuyMusicButton"); var BuyURL = mediacenter.getNamedString("BuyMusicURL"); if (BuyBMP != "" && BuyURL != "") { buyme.Image = 'BuyMusicButton'; buyme.visible = true; } } */ function ShowPlayMenu() { mnuPlay.showEx(1); } function UpdateTextColors() { metadata.foregroundColor=getDarkTextColor(); var cm = mediacenter.contrastMode; if ("BW"==cm) taskBtnNowPlayingCaption.foregroundColor = "#000000"; else if ("WB"==cm) taskBtnNowPlayingCaption.foregroundColor = "#FFFFFF"; else taskBtnNowPlayingCaption.foregroundColor = getDarkTextColor(); } function dummybutton() { this.down = false; } //main app and fullscreen have new super ffwd buttons (ffwd_multi), but they need //a dummy button to keep transport.js from freaking out var ffwd = new dummybutton(); function ShowTaskMenu(menu) { var task1ON = brand.task1URL!=""; var task2ON = brand.task2URL!=""; var task3ON = brand.task3URL!=""; menu.deleteAllItems(); menu.appendItem(1,"res://wmploc/RT_STRING/#2141"); menu.appendItem(2,"res://wmploc/RT_STRING/#2144"); menu.appendItem(3,"res://wmploc/RT_STRING/#2143"); menu.appendItem(4,"res://wmploc/RT_STRING/#2146"); menu.appendItem(5,"res://wmploc/RT_STRING/#1249"); menu.appendItem(6,"res://wmploc/RT_STRING/#2142"); if( task1ON || task2ON || task3ON ) { menu.appendSeparator(); } if( task1ON ) { menu.appendItem(7,brand.task1MenuText); } if( task2ON ) { menu.appendItem(8,brand.task2MenuText); } if( task3ON ) { menu.appendItem(9,brand.task3MenuText); } var sel = menu.show(); switch (sel) { case 1: app.currentTask = 'NowPlaying'; break; case 2: app.currentTask = 'MediaLibrary'; break; case 3: app.currentTask = 'CDAudio'; break; case 4: app.currentTask = 'CDWrite'; break; case 5: app.currentTask = 'PortableDevice'; break; case 6: app.currentTask = 'PlayerGuide'; break; case 7: app.currentTask = 'ServiceTask1'; break; case 8: app.currentTask = 'ServiceTask2' break; case 9: app.currentTask = 'ServiceTask3'; break; default: break; } } function SaveSettings() { theme.savePreference('mute',player.settings.mute); if(false==isNaN(g_nCurrentColorPreset)) { theme.savePreference('CurrentColorPreset',g_nCurrentColorPreset); } SaveTracktimeFormat(); } function AppRightClick(event) { if ( (event.clientX < (TransportSubview.left+TransportSubview.width)) && (event.clientY > (TransportSubview.top)) ) { mnuPlay2.top=(event.clientY-TransportSubview.top); if (app.taskBarVisible) { mnuPlay2.left=event.clientX-g_kTaskBarWidth; } else { mnuPlay2.left=event.clientX; } mnuPlay2.showEx(1); } else if ( !app.titleBarVisible ) { mnuMenubar.top=event.clientY; mnuMenubar.left=event.clientX; mnuMenubar.ShowEx(5); } } //============================================================== BEGIN CRESCENT ================================================================= //=============================================================================================================================================== //=============================================================================================================================================== function size() { this.tall=false; this.wide=false; } var horizontal_caption_padding_both_sides=8; //we will just multiply by two anyway, might as well pre-multiply var vertical_caption_padding_both_sides=4; //we will just multiply by two anyway, might as well pre-multiply var g_TaskbarDefaultHeight=36; //TODO - turn this back on when we have real graphics var g_ButtonDefaultWidth=64; var g_TaskbarTall=false; function SetTaskbarFontSize(newsize) { for(btn in g_taskbuttons) { ChangeFontSize(g_taskbuttons[btn].caption, newsize); } ChangeFontSize(taskBtnServiceTask1Caption, newsize); ChangeFontSize(taskBtnServiceTask2Caption, newsize); ChangeFontSize(taskBtnServiceTask3Caption, newsize); ChangeFontSize(appCaption,newsize); ChangeFontSize(tracktime,newsize); ChangeFontSize(metadata,newsize); LayoutTaskbar(); } function ChangeFontSize(textcontrol, newsize) { textcontrol.fontSize=newsize; textcontrol.value=textcontrol.value+" "; textcontrol.value=textcontrol.value.slice(0,-1); } function FitTaskbarButtonsToCaptions() { if (g_taskbuttons.length==0) { InitTaskbarSet(); } var tall = false; //chrome buttons for (tbtn in g_taskbuttons) { tall = tall || ( (g_taskbuttons[tbtn].caption.height + vertical_caption_padding_both_sides) > g_TaskbarDefaultHeight); g_taskbuttons[tbtn].wide = ( (g_taskbuttons[tbtn].caption.width + horizontal_caption_padding_both_sides) > g_ButtonDefaultWidth); } //glass buttons for (tbtn in g_servicebuttons) { tall = tall || ( (g_servicebuttons[tbtn].caption.height + vertical_caption_padding_both_sides) > g_TaskbarDefaultHeight); g_servicebuttons[tbtn].wide = ( (g_servicebuttons[tbtn].caption.width + horizontal_caption_padding_both_sides) > g_ButtonDefaultWidth); } SizeTaskBarButtons(tall); SizeAuxiliaryButtonSet(tall); } function SizeTaskBarButtons(tall) { for (tbtn in g_taskbuttons) { var sz = new size(); sz.tall = tall; sz.wide = g_taskbuttons[tbtn].wide; ResizeChromeButton(g_taskbuttons[tbtn].button, sz); } //glass buttons for (tbtn in g_servicebuttons) { var sz = new size(); sz.tall = tall; sz.wide = g_servicebuttons[tbtn].wide; ResizeGlassButton(g_servicebuttons[tbtn].button, sz); } } function TestLog(str) { try { //btnSmallBrandLogo2.upToolTip+="\n"+str; Spew.appendItem(str); } catch(err){} } function ResizeGlassButton(button, size) { try { if (!size.tall && !size.wide) { button.image="res://wmploc/#5080"; button.downImage="res://wmploc/#5085"; button.hoverImage="res://wmploc/#5090"; button.mappingImage="res://wmploc/#5040"; } else if (!size.tall && size.wide) { button.image="res://wmploc/#5081"; button.downImage="res://wmploc/#5086"; button.hoverImage="res://wmploc/#5091"; button.mappingImage="res://wmploc/#5041"; } else if (size.tall && !size.wide) { button.image="res://wmploc/#5082"; button.downImage="res://wmploc/#5087"; button.hoverImage="res://wmploc/#5092"; button.mappingImage="res://wmploc/#5042"; } else { button.image="res://wmploc/#5083"; button.downImage="res://wmploc/#5088"; button.hoverImage="res://wmploc/#5093"; button.mappingImage="res://wmploc/#5043"; } } catch(err){} } function ResizeChromeButton(button, size) { // TestLog("sizing button " + button.ID ); // TestLog(" tall: " + size.tall + ", wide: " + size.wide); try { if (!size.tall && !size.wide) { button.image="res://wmploc/#5010"; button.downImage="res://wmploc/#5020"; button.hoverImage="res://wmploc/#5030"; button.mappingImage="res://wmploc/#5040"; } else if (!size.tall && size.wide) { button.image="res://wmploc/#5011"; button.downImage="res://wmploc/#5021"; button.hoverImage="res://wmploc/#5031"; button.mappingImage="res://wmploc/#5041"; } else if (size.tall && !size.wide) { button.image="res://wmploc/#5012"; button.downImage="res://wmploc/#5022"; button.hoverImage="res://wmploc/#5032"; button.mappingImage="res://wmploc/#5042"; } else { button.image="res://wmploc/#5013"; button.downImage="res://wmploc/#5023"; button.hoverImage="res://wmploc/#5033"; button.mappingImage="res://wmploc/#5043"; } } catch(err){} } function SizeAuxiliaryButtonSet(tall) { if (tall) { svTaskButtons.backgroundImage="res://wmploc/#5101"; MoreButton.image="res://wmploc/#5061"; MoreButton.downImage="res://wmploc/#5061"; MoreButton.hoverImage="res://wmploc/#5061"; MoreButton.mappingImage="res://wmploc/#5066"; taskBtnPlayGroup.image="res://wmploc/#5051"; taskBtnPlayGroup.hoverImage="res://wmploc/#5051"; taskBtnPlayGroup.downImage="res://wmploc/#5051"; taskBtnPlayGroup.mappingImage="res://wmploc/#5054"; taskBtnServicesMenuGroup.image="res://wmploc/#5056"; taskBtnServicesMenuGroup.hoverImage="res://wmploc/#5058"; taskBtnServicesMenuGroup.downImage="res://wmploc/#5056"; taskBtnServicesMenuGroup.mappingImage="res://wmploc/#5054"; svSharkFin.backgroundImage="res://wmploc/#5071"; svSharkFinBottom.backgroundImage="res://wmploc/#5074"; svServices.backgroundImage="res://wmploc/#5111"; svServicesEndcapRight.backgroundImage="res://wmploc/#5116"; } else { svTaskButtons.backgroundImage="res://wmploc/#5100"; MoreButton.image="res://wmploc/#5060"; MoreButton.downImage="res://wmploc/#5060"; MoreButton.hoverImage="res://wmploc/#5060"; MoreButton.mappingImage="res://wmploc/#5065"; taskBtnPlayGroup.image="res://wmploc/#5050"; taskBtnPlayGroup.hoverImage="res://wmploc/#5052"; taskBtnPlayGroup.downImage="res://wmploc/#5052"; taskBtnPlayGroup.mappingImage="res://wmploc/#5053"; taskBtnServicesMenuGroup.image="res://wmploc/#5055"; taskBtnServicesMenuGroup.hoverImage="res://wmploc/#5057"; taskBtnServicesMenuGroup.downImage="res://wmploc/#5057"; taskBtnServicesMenuGroup.mappingImage="res://wmploc/#5053"; svSharkFin.backgroundImage="res://wmploc/#5070"; svSharkFinBottom.backgroundImage="res://wmploc/#5073"; svServices.backgroundImage="res://wmploc/#5110"; svServicesEndcapRight.backgroundImage="res://wmploc/#5115"; } } var g_rightmostButton=null; var g_servicesMaxWidth=315; function UpdateOverflowButtonVisible(force_layout) { var rightmost_taskbuttonedge = g_rightmostButton.left+g_rightmostButton.width; var barwidth = svTaskButtons.width; var overflow = (barwidth <= g_servicesMaxWidth + rightmost_taskbuttonedge); MoreButton.visible = svTaskButtons.visible && overflow; if (overflow) { svServices.horizontalAlignment="left"; svServices.width = barwidth - rightmost_taskbuttonedge-7; svServices.left = barwidth - svServices.width; } else { if (force_layout || (svServices.horizontalAlignment!="right")) { svServices.horizontalAlignment="left"; svServices.width = g_servicesMaxWidth; svServices.left=barwidth-g_servicesMaxWidth-7; } svServices.horizontalAlignment="right"; } } function UpdateServicesVisible(left) { svServices.visible = ( left >= (g_rightmostButton.left + g_rightmostButton.width + svSharkFin.width - 4) ); } function UpdateServiceButtonCount() { // TestLog("-guideURL: " + brand.task1URL); // TestLog("-serviceURL: " + brand.task2URL); // TestLog("-radioURL: " + brand.task3URL); var task1ON = brand.task1URL!=""; var task2ON = brand.task2URL!=""; var task3ON = brand.task3URL!=""; ToggleServiceButton(1, task1ON); ToggleServiceButton(2, task2ON); ToggleServiceButton(3, task3ON); g_servicebuttons = new Array(); if (task1ON) g_servicebuttons[g_servicebuttons.length] = new taskbutton(taskBtnServiceTask1_background, taskBtnServiceTask1Group, taskBtnServiceTask1Caption); if (task2ON) g_servicebuttons[g_servicebuttons.length] = new taskbutton(taskBtnServiceTask2_background, taskBtnServiceTask2Group, taskBtnServiceTask2Caption); if (task3ON) g_servicebuttons[g_servicebuttons.length] = new taskbutton(taskBtnServiceTask3_background, taskBtnServiceTask3Group, taskBtnServiceTask3Caption); //TestLog("on/off: " + task3ON + task1ON + task2ON); if (g_servicebuttons.length>0) { //TestLog("left service: " + g_servicebuttons[0].subview.id + ", left: " + g_servicebuttons[0].subview.left); //g_servicebuttons[0].subview.left=g_servicebuttonoffset; } layoutbuttons(g_servicebuttons); } var g_servicebuttonoffset=52; function ToggleServiceButton(tasknumber, btnenabled) { var btn = eval( "taskBtnServiceTask" + tasknumber + "_background"); btn.visible = btnenabled; var bg = eval("taskBtnServiceTask" + tasknumber + "Group"); bg.visible=btnenabled; } function LayoutTaskbar() { FitTaskbarButtonsToCaptions(); var changed = ArrangeTaskbarButtons(); UpdateOverflowButtonVisible(changed); } //this pushes all the taskbar buttons around when one of the sizes changes function ArrangeTaskbarButtons() { // TestLog("ArrangeTaskbarButtons()"); layoutbuttons(g_taskbuttons); layoutbuttons(g_servicebuttons); var rightmostbtn = g_servicebuttons[g_servicebuttons.length-1].subview; var previous = g_servicesMaxWidth; g_servicesMaxWidth = svSharkFin.width + 3*(taskBtnServiceTask1Group.width) + g_overflowWidth; return (previous!=g_servicesMaxWidth); } var g_overflowWidth=70; function layoutbuttons(arrayofbuttons) { if (null!=arrayofbuttons) { for (i=1; i<arrayofbuttons.length; i++) { // TestLog( " "+ arrayofbuttons[i].subview.ID + ": setting left to " + (arrayofbuttons[i-1].subview.left + arrayofbuttons[i-1].subview.width) ); arrayofbuttons[i].subview.left = arrayofbuttons[i-1].subview.left + arrayofbuttons[i-1].subview.width; } } } //this handles the clipping behavior in which various buttons appear/disappear in different order function HandleTaskBarResize() { UpdateOverflowButtonVisible(); } var g_taskbuttons; var g_servicebuttons; function InitTaskbarSet() { g_taskbuttons = new Array ( new taskbutton(taskBtnNowPlaying_background, taskBtnNowPlayingGroup, taskBtnNowPlayingCaption), new taskbutton(taskBtnMediaLibrary_background, taskBtnMediaLibraryGroup, taskBtnMediaLibraryCaption), new taskbutton(taskBtnCDAudio_background, taskBtnCDAudioGroup, taskBtnCDAudioCaption), new taskbutton(taskBtnBurn_background, taskBtnBurnGroup, taskBtnBurnCaption), new taskbutton(taskBtnSync_background, taskBtnSyncGroup, taskBtnSyncCaption), new taskbutton(taskBtnPlayerGuide_background, taskBtnPlayerGuideGroup, taskBtnPlayerGuideCaption) ); g_servicebuttons = new Array ( new taskbutton(taskBtnServiceTask1_background, taskBtnServiceTask1Group, taskBtnServiceTask1Caption), new taskbutton(taskBtnServiceTask2_background, taskBtnServiceTask2Group, taskBtnServiceTask2Caption), new taskbutton(taskBtnServiceTask3_background, taskBtnServiceTask3Group, taskBtnServiceTask3Caption) ); } function taskbutton(subview, button, caption) { this.subview=subview; this.button=button; this.caption=caption; this.wide=false; } var g_kTaskButtonDefaultWidth=64; function UpdateLogoImages() { logoanimation.image=""; logoanimation.image="WMPImage_SeviceBrandLogo"; } //TODO - temp for usability study function GetTaskCaption(prefname, resourceID) { return theme.loadString("res://wmploc/RT_STRING/#" + resourceID); } // ============================== LOGO ANIMATION ======================================== var g_logogoingup=true; var g_logoanimationcount=0; // ============================== Metadata and Task Status ======================================== var g_appTimerInterval=3000; function set_apptimer() { svUpperLeftCorner_appTimer.moveTo(0,0,g_appTimerInterval); } function tick() { OnTimerMainApp(); set_apptimer(); } var g_ShowingTaskStatus=false; function OnTimerMainApp() { if (player.playState!=psPlaying) { if (g_TopStatusStrings.length==0) { ShowStatus(""); } RotateTaskStatus(); return; } //we linger on the last one and rotate through the task status if available... if ( (g_MetaDataCollectionManager.currentIndex == g_MetaDataCollectionManager.metaDataCollection.length) && RotateTaskStatus() ) { //already did our work in RotateTaskStatus() } else { OnTimerTransport(); } } var g_taskstatus=false; function RotateTaskStatus() { var stat = GetTaskStatus(g_TaskStatusIndex); g_TaskStatusIndex++; if ( g_taskstatus && (stat!="") && (g_TaskStatusIndex<g_NumStatusStringsToShow) ) { ShowStatus(stat); g_taskstatus=true; return true; } g_TaskStatusIndex=0; return false; } var g_NumStatusStringsToShow=3; var g_TaskStatusIndex=0; var g_TopStatusStrings=new Array(); function GetTaskStatus(index) { if (index==0) { UpdateTopStatusStrings(); } if (index < g_TopStatusStrings.length) { return g_TopStatusStrings[index]; } return ""; } function UpdateTopStatusStrings() { var iTotalStatusStrings=5; g_TopStatusStrings = new Array(); for (var i=0; ((i<iTotalStatusStrings) && (g_TopStatusStrings.length<=g_NumStatusStringsToShow)); i++) { switch(i) { case 0: AppendStatusIfAvailable("burn"); break; case 1: AppendStatusIfAvailable("rip"); break; case 2: AppendStatusIfAvailable("content"); break; case 3: AppendStatusIfAvailable("sync"); break; case 4: AppendStatusIfAvailable("mls"); break; } } } function AppendStatusIfAvailable(category) { var str = helper.getStatusString(category); if (str!="") { g_TopStatusStrings.push(str); } } function DoNotification(str) { notification.value=str; if (g_notifystate==0) { notification.visible=true; g_notifystate=3; g_metadatatop = metadata.top; metadata.verticalAlignment="top"; metadata.moveTo(metadata.left,svMarquee.height+g_metadatatop,330); } } function NotificationTick() { switch(g_notifystate) { case 3: //pause for a moment... g_notifystate--; metadata.moveTo(metadata.left, metadata.top, 4000); break; case 2: g_notifystate--; metadata.moveTo(metadata.left, g_metadatatop, 330); break; case 1: metadata.verticalAlignment="center"; notification.visible=false; g_notifystate--; break; } } var g_metadatatop=0; var g_notifystate=0; function UpdateSeek() { seek.value=player.controls.currentPosition; seek.moveTo(seek.left,seek.top,33); } function LayoutAppCaption() { appCaption.horizontalAlignment="left"; appCaption.width = svAppFillTop.width - appCaption.left - tracktime_top.width - 5; appCaption.horizontalAlignment="stretch"; tracktime_top.left = svAppFillTop.width - tracktime_top.width - 90; tracktime_top.horizontalAlignment="right"; }